今天要介紹從簡單的變色效果到複雜的文字下劃線動畫,用 CSS 屬性如 background-color
, box-shadow
, linear-gradient
, 以及 transform
來實現這些效果
所有按鈕效果使用相同的 HTML 結構:
<button class="btn">Hello!</button>
body
和按鈕的基礎樣式在所有範例中保持一致:
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
.btn {
padding: 10px 20px;
font-size: 16px;
border-radius: 5px;
transition: all 0.3s ease;
cursor: pointer;
}
當鼠標懸停時,按鈕背景色從藍色變為綠色
.btn {
background-color: #3498db;
color: white;
border: none;
}
.btn:hover {
background-color: #2ecc71;
}
懸停時,按鈕背景變成藍色,文字變為白色
.btn {
background-color: transparent;
color: #3498db;
border: 2px solid #3498db;
}
.btn:hover {
background-color: #3498db;
color: white;
}
懸停時,按鈕背景變為漸變色。
.btn {
background-color: #3498db;
color: white;
border: none;
}
.btn:hover {
background: linear-gradient(45deg, #e74c3c, #f39c12);
}
當懸停時,按鈕會出現陰影效果,產生浮動感。
.btn {
background-color: #3498db;
color: white;
border: none;
}
.btn:hover {
box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.3); /* 懸停時增加陰影 */
}
當懸停時,按鈕中的文字會出現從左到右的下劃線動畫。
.btn {
background-color: transparent;
color: #3498db;
border: none;
position: relative; /* 設置按鈕為相對定位,使得後續的絕對定位子元素能夠相對於這個按鈕進行定位 */
}
}
.btn:before {
content: ''; /* 插入一個空內容,用來作為下劃線的基礎 */
position: absolute; /* 絕對定位,相對於 .btn 元素進行定位 */
width: 100%;
height: 2px;
bottom: 0; /* 位於按鈕底部 */
left: 0; /* 從按鈕左邊開始 */
background-color: #3498db; /* 下劃線顏色為藍色 */
visibility: hidden; /* 初始狀態下,隱藏下劃線 */
transform: scaleX(0); /* 初始狀態下,下劃線的水平縮放比例為 0,隱藏狀態 */
transition: all 0.3s ease-in-out; /* 設置動畫過渡效果,所有屬性在 0.3 秒內平滑過渡,使用 ease-in-out 函數 */
}
.btn:hover:before {
visibility: visible; /* 鼠標懸停時,顯示下劃線 */
transform: scaleX(1); /* 鼠標懸停時,下劃線的水平縮放比例變為 1,顯示完整的下劃線 */
}